package com.zc.web.domain;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zc.common.annotation.Excel;
import com.zc.common.core.domain.BaseEntity;

/**
 * 今日计划对象 today_plan
 * 
 * @author zc
 * @date 2025-09-30
 */
public class TodayPlan extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 所属用户ID */
    @Excel(name = "所属用户ID")
    private Long userId;

    /** 计划日期（YYYY-MM-DD） */
    @Excel(name = "计划日期", readConverterExp = "Y=YYY-MM-DD")
    private LocalDate planDate;

    /** 计划中小目标总数 */
    @Excel(name = "计划中小目标总数")
    private Integer totalGoals;

    /** 已完成的目标数 */
    @Excel(name = "已完成的目标数")
    private Integer completedCount;

    /** 完成比例（%） */
    @Excel(name = "完成比例", readConverterExp = "%=")
    private BigDecimal completionRate;

    /** 当日总结备注（可选） */
    @Excel(name = "当日总结备注", readConverterExp = "可=选")
    private String summaryNote;

    @TableField(exist = false)
    /** 今日计划子项明细信息 */
    private List<TodayPlanItem> todayPlanItemList;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setPlanDate(LocalDate planDate)
    {
        this.planDate = planDate;
    }

    public LocalDate getPlanDate()
    {
        return planDate;
    }

    public void setTotalGoals(Integer totalGoals)
    {
        this.totalGoals = totalGoals;
    }

    public Integer getTotalGoals()
    {
        return totalGoals;
    }

    public void setCompletedCount(Integer completedCount)
    {
        this.completedCount = completedCount;
    }
    public Integer getCompletedCount()
    {
        return completedCount;
    }

    public void setCompletionRate(BigDecimal completionRate) 
    {
        this.completionRate = completionRate;
    }

    public BigDecimal getCompletionRate() 
    {
        return completionRate;
    }

    public void setSummaryNote(String summaryNote) 
    {
        this.summaryNote = summaryNote;
    }

    public String getSummaryNote() 
    {
        return summaryNote;
    }

    public List<TodayPlanItem> getTodayPlanItemList()
    {
        return todayPlanItemList;
    }

    public void setTodayPlanItemList(List<TodayPlanItem> todayPlanItemList)
    {
        this.todayPlanItemList = todayPlanItemList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("planDate", getPlanDate())
            .append("totalGoals", getTotalGoals())
            .append("completedCount", getCompletedCount())
            .append("completionRate", getCompletionRate())
            .append("summaryNote", getSummaryNote())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("todayPlanItemList", getTodayPlanItemList())
            .toString();
    }
}
